package net.csdn.business.common.domain.request.notify;

import com.alibaba.fastjson2.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Map;
import java.util.Set;


/**
 * @ClassName SendNotifyDTO
 * @Description 发送通知
 * @Author zhangyl
 * @Date 2023/12/18 10:44
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SendNotifyDTO {


    /**
     * 业务编码
     */
    @NotBlank(message = "busCode不能为空")
    private String busCode;

    /** 请求批次号 */
    @NotBlank(message = "batchNum不能为空")
    private String batchNum;

    /** 发送者id，当为-1时，为系统发送 */
    @NotBlank(message = "sender不能为空")
    private String sender;

    /** 接收者id */
    @NotNull(message = "receiver不能为空")
    private Set<String> receiver;

    /**
     * @Description: 消息内容中的可变部分(占位符替换)
     *
     */
    private Map<String, String> variables;

    /** 触发通知动作的主体的url*/
    private String url;
    /** 被操作对象id，例如：项目、ISSUE、PullRequest的id */
    private String targetId;
    /** 操作对像所属主体的命名空间信息：{id：命名空间id;type:类型（eg:project:项目；org:组织；user:个人);path：命名空间路径；name:名称路径} */
    private JSONObject nameSpace;

}
